@echo off
echo ================================
echo    停止考试管理系统服务
echo ================================

:: 设置变量
set NGINX_DIR=C:\nginx

:: 停止Nginx
echo 停止Nginx服务...
cd /d "%NGINX_DIR%"
nginx.exe -s quit

:: 等待Nginx停止
timeout /t 2 /nobreak > nul

:: 强制停止Nginx进程（如果还在运行）
tasklist /fi "imagename eq nginx.exe" | find "nginx.exe" > nul
if not errorlevel 1 (
    echo 强制停止Nginx进程...
    taskkill /f /im nginx.exe > nul 2>&1
)

:: 停止后端Node.js进程
echo 停止后端服务...

:: 先尝试使用PM2停止
call pm2 --version >nul 2>&1
if not errorlevel 1 (
    echo 使用PM2停止后端服务...
    call pm2 stop exam-backend
    call pm2 delete exam-backend
) else (
    echo 使用普通方式停止后端服务...
)

:: 停止命令行窗口中的后端进程
for /f "tokens=2" %%i in ('tasklist /fi "windowtitle eq 考试系统后端*" /fo csv ^| find "cmd.exe"') do (
    taskkill /pid %%i /f > nul 2>&1
)

:: 停止所有Node.js进程（谨慎使用）
echo 停止Node.js进程...
taskkill /f /im node.exe > nul 2>&1

echo.
echo ================================
echo 检查服务状态...
echo ================================

:: 检查Nginx进程
tasklist /fi "imagename eq nginx.exe" | find "nginx.exe" > nul
if errorlevel 1 (
    echo ✓ Nginx已停止
) else (
    echo 警告: Nginx仍在运行
)

:: 检查Node.js进程
tasklist /fi "imagename eq node.exe" | find "node.exe" > nul
if errorlevel 1 (
    echo ✓ 后端服务已停止
) else (
    echo 警告: Node.js进程仍在运行
)

echo.
echo ================================
echo 服务停止完成！
echo ================================
pause
